linux 打印机的使用
·
Table of Contents
配置样例
ippfind
avahi-resolve -n EPSON4DDFDF.local
getent hosts EPSON4DDFDF.local
ipptool -tv ipp://EPSON4DDFDF.local:631/ipp/print /usr/share/cups/ipptool/get-printer-attributes.test | grep -i device-id -C3
# 无驱动安装打印机(最简单、最稳定)
lpip=192.168.4.143 # ← 替换为你的打印机 IP
sudo lpadmin -p Epson_L4160_Driverless \
-E \
-v "ipp://$lpip:631/ipp/print" \
-m everywhere
lpip=192.168.4.143 # ← 替换为你的打印机 IP
sudo apt update && sudo apt install printer-driver-escpr
lpinfo -m | grep -i "L4160"
sudo lpadmin -p Epson_L4160_Full \
-E \
-v "ipp://$lpip/ipp/print" \
-m "epson-inkjet-printer-escpr/Epson-L4160_Series-epson-escpr-en.ppd"
# 删除打印机
sudo lpadmin -x Epson_L4160_Driverless Epson_L4160_Full
lpinfo -m | grep -i 'm329\|laserjet.pro.*mfp' | grep -v 'generic'
ip=192.168.1.100 # ← 替换为你的打印机 IP
sudo lpadmin -p M329 \
-v "ipp://$ip:631/ipp/print" \
-m postscript-hp:0/ppd/hplip/HP/hp-laserjet_pro_mfp_m329-ps.ppd \
-E
# 设为默认打印机
sudo lpadmin -d M329
# 测试打印
echo "✅ M329 驱动配置成功" | lp
tail -f /var/log/cups/error_log
# 使用无驱动打印 这是最简单的方式,直接使用系统发现的驱动
# -m everywhere 参数告诉CUPS使用“无驱动”模式自动配置,这利用了你的打印机已经支持的 IPP Everywhere 标准
sudo lpadmin -p HP_LaserJet_Pro_M329 \
-E \
-v ipp://HP489EBD702C63.local:631/ipp/print \
-m everywhere
echo "HP LaserJet Pro M329 测试页 - $(date)" | lpr -P HP_LaserJet_Pro_M329
常用工具功能
| 工具 | 包名 | 用途 |
|---|---|---|
| cupsd | cups-daemon | CUPS 后台服务(调度器) |
| lp* 系列 | cups-client | 打印作业控制(lp, lpstat, lpadmin, cancel) |
| ipptool | cups-ipp-utils | IPP 协议底层探测(诊断必备) |
| avahi-browse | avahi-utils | 浏览 DNS-SD 服务(发现打印机) |
| system-config-printer(CLI 调用) | system-config-printer | 文本界面配置(备选) |
|对象| 命令| 含义 |-| -| - |Scheduler| cupsd| 打印调度器 |Printer| lpadmin| 打印队列 |Job| lp / lpr| 打印任务 |Options| lpoptions| 打印参数
常用命令行
lp file.pdf # 用默认打印机
lp -d M329 file.pdf # 指定打印机
lp -o sides=two-sided-long-edge file.pdf # 双面(长边翻转)
lp -o number-up=2 file.pdf # 1页打2版(节省纸)
cancel M329-123 # 取消作业ID 123
cancel -a M329 # 取消M329所有作业
sudo tail -f /var/log/cups/error_log
手动测试打印(绕过 CUPS 队列)
# 直接发 PDF 到 IPP 端点(需打印机支持 IPP Everywhere)
curl -X POST \
-H "Content-Type: application/pdf" \
--data-binary @/etc/issue \
'ipp://192.168.1.100:631/ipp/print' \
-o /tmp/ipp-response.bin
# 检查响应:若 200 OK 且打印机出纸 → 底层 IPP 正常,问题在 CUPS 配置
关闭cups-browsed
默认发现的打印机器常是implicitclassj性能低??
sudo systemctl stop cups-browsed
sudo systemctl disable cups-browsed
命令行使用打印机
# 第一步:发现打印机URI, 主动扫描局域网中所有支持 IPP 的设备(打印机、扫描仪、甚至 IPP 服务器)
ippfind
# 第二步:测试连接
ipptool -tv 'ipp://EPSON4DDFDF.local:631/ipp/print' /usr/share/cups/ipptool/get-printer-attributes.test
# 第三步:添加到CUPS
sudo lpadmin -p EPSON_L4160 \
-E \
-v "ipp://EPSON4DDFDF.local:631/ipp/print" \
-m everywhere
# 查看DNS-SD服务详细信息
avahi-browse -rpt _ipp._tcp
# 查看所有打印机 # 列出 CUPS 当前已注册并管理的打印机 及其内部表示的设备 URI
lpstat -p -d
# 输出示例:
# printer EPSON_L4160 is idle. enabled since Mon 2023-01-01 10:00:00 CST
# printer HP_LaserJet is idle. enabled since Mon 2023-01-01 10:00:00 CST
# system default destination: EPSON_L4160
# 查看详细打印机信息
lpstat -l -v
# 查看打印队列
lpq
# 输出示例:
# EPSON_L4160 is ready
# no entries
# 查看打印机选项
lpoptions -p <printer_name> -l# 查看所有打印机
lpstat -p -d
# 查看详细打印机信息
lpstat -l -v
# 列出所有可用驱动
lpinfo -m
添加打印机
# 添加网络打印机(IPP协议)
sudo lpadmin -p EPSON_L4160 -E \
-v "ipp://192.168.1.100/ipp/print" \
-m "drv:///sample.drv/generic.ppd" \
-L "办公室"
# 参数解释:
# -p:打印机名称
# -E:启用打印机
# -v:设备URI
# -m:PPD驱动文件
# -L:位置描述
# 添加USB打印机
sudo lpadmin -p HP_Deskjet -E \
-v "usb://HP/Deskjet?serial=XYZ123" \
-m "ppd/hp-deskjet.ppd"
# 添加SMB共享打印机
sudo lpadmin -p Network_Printer -E \
-v "smb://workgroup/user:password@server/printer" \
-m "everywhere" \
-o auth-info-required=username,password
# 发现网络打印机
ippfind
# 输出示例:ipp://EPSON%20L4160._ipp._tcp.local/
# 获取驱动信息
lpinfo --make-and-model "EPSON L4160" -m
配置打印机
# 设置默认打印机
sudo lpadmin -d EPSON_L4160
# 配置打印机选项
sudo lpadmin -p EPSON_L4160 \
-o PageSize=A4 \
-o Duplex=DuplexNoTumble \
-o ColorModel=RGB \
-o Resolution=600dpi
# 禁用/启用打印机
sudo cupsdisable EPSON_L4160
sudo cupsenable EPSON_L4160
# 拒绝/接受打印作业
cupsreject EPSON_L4160
cupsaccept EPSON_L4160
基本打印
# 基本打印
lpr document.pdf
# 指定打印机
lpr -P EPSON_L4160 document.pdf
# 指定份数
lpr -# 3 document.pdf
# 指定打印范围
lpr -o page-ranges=1-5,8,11-13 document.pdf
# 双面打印
lpr -o sides=two-sided-long-edge document.pdf
# 打印选项组合
lpr -P HP_LaserJet -o media=A4 -o sides=two-sided-short-edge -# 2 report.pdf
打印队列管理
# 查看所有打印作业
lpstat -o
# 输出示例:
# EPSON_L4160-101 user1 1024 Mon 10:00:00
# HP_LaserJet-102 user2 2048 Mon 10:01:00
# 查看特定打印机的作业
lpq -P EPSON_L4160
# 取消打印作业
lprm 101
# 或取消所有作业
lprm -
# 移动作业到另一台打印机
lpmove 101 HP_LaserJet
# 查看作业详情
lpq -l -P EPSON_L4160
高级配置
# 主要配置文件
/etc/cups/cupsd.conf # CUPS服务配置
/etc/cups/printers.conf # 打印机定义
/etc/cups/ppd/ # PPD驱动文件目录
/var/spool/cups/ # 打印队列目录
# 查看CUPS错误日志
sudo tail -f /var/log/cups/error_log
# 查看访问日志
sudo tail -f /var/log/cups/access_log
# 设置日志级别
sudo cupsctl LogLevel=debug
驱动方案对比(基于你的 CMD 列表)
| 驱动方案 | 是否支持 PCLXL | 是否支持 PDF | 是否支持 POSTSCRIPT | 状态反馈 | 推荐度 |
|---|---|---|---|---|---|
| hpcups | ✅ 原生优化 | ✅ 直接处理 | ✅ Ghostscript 后端 | ✅ 完整(墨量/卡纸) | ⭐⭐⭐⭐⭐ |
| IPP Everywhere (everywhere) | ❌ 转 PDF | ✅ 原生 | ❌ 无 PostScript | ⚠️ 仅基础状态 | ⭐⭐⭐ |
| Generic PostScript | ❌ | ❌ | ✅ | ❌ | ⭐ |
✅ 为什么 hpcups 更优?
- 你的打印机广播了 PCLXL(高效二进制语言),而 hpcups 会:
- 直接生成 PCLXL → 比 PDF 转换快 20%+
- 利用 CID:HPLJPDLV1 启用硬件级双面校准
- 通过 PJL 查询 SN:CNDRP7P136 实现精确墨量监控